-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
469 Дополнение модели данных для хранения распарсенного текста #496
base: master
Are you sure you want to change the base?
Conversation
5207285
to
80b481e
Compare
app/server.py
Outdated
parsed_file = DocxUploader() | ||
parsed_file.upload(filepath) | ||
parsed_file.parse() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Поскольку в систему загружаются разные виды/типы файлов (сейчас это и презентации, и doc-документы, и md-файлы) - парсинг файлгов происходит в отдельной функции, вам нужен раздел https://github.com/moevm/document_insight_system/blob/master/app/main/parser.py#L22
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
убрала этот фрагмент, парсинг текста перенесён в create_task
(см. последний коммит)
app/server.py
Outdated
parsed_file.make_chapters("VKR") | ||
parsed_file.make_headers("VKR") | ||
chapters = parse_chapters(parsed_file) | ||
chapters_with_headers = parse_headers_and_pages(chapters, parsed_file) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Не все docx-документы присылаемые в систему - VKR, тип документа определяется набором критериев (тип документа у отчета либо VKR либо LR) - поэтому parse_headers_and_pages для файла необходимо делать, видимо позднее, где известен тип документа (либо получать и проверять его)
Отсюда пара моментов
- кажется, что парсинг файла при загрузке файла сильно задержит весь процесс (и ожидания пользователя)
- для проверок / парсинга содержимого используется отдельная задача / исполнитель (celery worker для celery-задачи, в которой как раз и производится проверка + парсинг: https://github.com/moevm/document_insight_system/blob/master/app/tasks.py#L37)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- парсинг перенесён в celery worker (
create_task
) - тип документа теперь берётся из
check_obj
app/server.py
Outdated
@@ -225,7 +236,8 @@ def run_task(): | |||
'score': -1, # score=-1 -> checking in progress | |||
'is_ended': False, | |||
'is_failed': False, | |||
'params_for_passback': current_user.params_for_passback | |||
'params_for_passback': current_user.params_for_passback, | |||
'parsed_chapters': chapters_with_headers |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кажется, обсуждали с вами, что для обработанного текста и дальнейшей его токенизации (или что вы планируете) нужно завести отдельную коллекцию, а с учетом, что checks
- хранит все проверки (не только ВКР), это становится ещё более актуальным
Свяжите с конкретной проверкой добавив поле check_id + filename (чтобы была информация о проверке из которой был получен файл и как он называется - пригодится в дальнейшем)
Плюс ещё, что стоит подумать (если не думали) - пользователи могут загружать
- одинаковые файлы по содержанию - пофиксили отступы, чтобы пройти критерий - сам текст не поменялся - стоит ли добавлять его в бд как ещё один документ (который получается сплагиачен с самого себя другого)?
- немного различающиеся файлы - поменял подпись таблицы, чтобы пройти критерий - текст уже глобально (по какому-нибудь хэшу) другой, но получаем плагиает 99.99% с самого себя
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-
создана новая коллекция
parsed_texts
, каждый документ в коллекции содержит_id
проверки, имя файла и распарсенный по разделам и страницам текст -
по поводу одинаковых файлов: при изменении внутри того же самого файла (таблицы, подписи и т. д.) нужно парсить имя этого файла, и если оно совпадает с новой проверкой, то обновлять текст в БД, а не загружать новый. если такой вариант подходит, в ближайшее время добавлю эту проверку
add ParsedText in db_types.py && move text parsing to create_task
#469
Check
добавлено полеparsed_chapters
для хранения распарсенного текста ВКР в формате{"header" : "", "start_page" : 1, "text" : ""}
parse_headers_and_pages
иparse_chapters
для соответствующего парсинга текста ВКР